﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Fuyao.Business.Entities.Models;
using Fuyao.Business.Logic.BC;
using Fuyao.Win.UI.Util;
using Fuyao.Win.UI.Common;

namespace Fuyao.Win.UI.Mantenimientos
{
    public partial class frmListClientes : Form
    {
        BusinessLogic bc = new BusinessLogic();
        List<Vendedor> listVendedor = new List<Vendedor>();
        List<Cliente> listCliente = new List<Cliente>();


        public frmListClientes()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.ControlBox = false;
            this.WindowState = FormWindowState.Maximized;
            this.BringToFront();            
        }

        private void cargarCboVendedores()
        {
             Utilitarios.cargarCboVendedores(this.cboVendedor);
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
                Mantenimientos.frmClientes frm = new Mantenimientos.frmClientes();
                frm.ShowDialog();
                if (frm.action) cargarGrillaClientes(false);
        }      

        private void cargarGrillaClientes(bool _flag)
        {
            Cliente beCliente = new Cliente();
            beCliente.CodigoCliente = this.txtCodigoCliente.Text.Trim() == string.Empty ? "0" : this.txtCodigoCliente.Text.Trim();
            beCliente.NombreCliente = this.txtNombreCliente.Text.Trim() == string.Empty ? "0" : this.txtNombreCliente.Text.Trim();
            beCliente.VendedorID = Convert.ToInt32(this.cboVendedor.SelectedValue);
            beCliente.Estado = this.cboEstado.SelectedIndex == 0 ? true : false;
            listCliente = bc.getClienteByFilter(beCliente);
            if (listCliente.Count > 0) dgvClientes.DataSource = listCliente;
            else
            {
                if (!_flag)
                {
                    MessageBox.Show("No se encontraron registros, verifique los filtros de búsqueda", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    dgvClientes.DataSource = null;
                }
            }
        }

        private void setColumnasGrilla()
        {
            ColClienteID.DataPropertyName = "ClienteID";
            colCodigoCliente.DataPropertyName = "CodigoCliente";
            colNombresClientes.DataPropertyName = "NombreCliente";
            ColDireccionCliente.DataPropertyName = "Direccion";
            ColRucCliente.DataPropertyName = "RUC";
            ColDniCliente.DataPropertyName = "DNI";
            ColTelefonoCliente.DataPropertyName = "Telefono";
            ColEstadoCliente.DataPropertyName = "Estado";
            ColVendedorIdCliente.DataPropertyName = "VendedorID";
            ColVendedorAsignadoCliente.DataPropertyName = "VendedorNombre";
        }

        private void limpiarControles()
        {
            Utilitarios.limpiarControles(this);
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            if (dgvClientes.RowCount == 0)
            {
                MessageBox.Show("No existen registros para Editar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (dgvClientes.CurrentRow != null && dgvClientes.CurrentRow.DataBoundItem != null)
            {
                Cliente oCliente = (Cliente)dgvClientes.CurrentRow.DataBoundItem;
                Mantenimientos.frmClientes frm = new Mantenimientos.frmClientes();
                frm.ClienteID = oCliente.ClienteID;
                frm.ShowDialog();
                if (frm.action) cargarGrillaClientes(false);
            }
            else
            {
                MessageBox.Show("Seleccione un registro para Editar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }            
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (dgvClientes.RowCount == 0)
            {
                MessageBox.Show("No existen registros para Eliminar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (dgvClientes.CurrentRow != null) eliminarCliente();
            else
            {
                MessageBox.Show("Seleccione un registro para Eliminar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }     
        }

        private void eliminarCliente()
        {
            if (!((Cliente)dgvClientes.CurrentRow.DataBoundItem).Estado)
            {
                MessageBox.Show("El registro seleccionado ya se encuentra eliminado", "Sistema FUYAO - Validando opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            if (MessageBox.Show("Esta seguro que desea eliminar el registro seleccionado", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
            {
                if (bc.DeleteCliente(((Cliente)dgvClientes.CurrentRow.DataBoundItem).ClienteID,VariablesGlobales.GlobalEnUsuario.UsuarioID))
                {
                    MessageBox.Show("Se eliminó el registro correctamente", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    cargarGrillaClientes(false);
                }
                else
                    MessageBox.Show("Error al eliminar el registro seleccionado, contacte con Sistemas", "Sistema FUYAO - Mensaje de Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        private void btnRestaurar_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Normal;
        }

        private void btnMaximizar_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtRucCliente_KeyPress(object sender, KeyPressEventArgs e)
        {
            Utilitarios.vSoloNumeros(e);
        }

        private void btnBuscarCliente_Click(object sender, EventArgs e)
        {
            cargarGrillaClientes(false);  
        }

        private void frmListClientes_Load(object sender, EventArgs e)
        {
            this.cboEstado.SelectedIndex = 0;
            Utilitarios.configurarGrilla(ref dgvClientes);
            cargarCboVendedores();
            setColumnasGrilla();
            cargarGrillaClientes(true);
        }

        private void txtCodigoCliente_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.txtNombreCliente.Focus();
        }

        private void txtNombreCliente_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.btnBuscarClientes.Focus();
        }       
    }
}
